package org.jeecg.modules.innerApi.common.requestDto;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecg.modules.xxgx.djgl.entity.cezs.Cezs;
import org.jeecg.modules.xxgx.djgl.entity.tdyw.*;
import org.jeecg.modules.xxgx.fjys.vo.FjysVO;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;
import java.util.List;

/**
 * @Description: 待开发票参数封装
 * @Author: jeecg-boot
 * @Date:   2023-08-18
 * @Version: V1.0
 */
@Data
@ApiModel(description="待开发票信息")
public class InvoiceParam extends CommonParam{

	/***
	 * 32位uuid:根据单据开票开票申请流程号为：单据的编号；
	 * 手工开票需要前端传递开票申请流水号：防止重复开票
	 */
	@ApiModelProperty(value = "开票申请流水号")
	private String fpsqlsh;

	/**业务单据编号*/
	@ApiModelProperty(value = "业务单据编号")
	private String ywdjbh;

	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty(value = "单据日期")
	private Date djrq;

	/**部门代码（组织机构代码）*/
	@Excel(name = "部门代码", width = 15)
	@ApiModelProperty(value = "部门代码")
	private String bmdm;

	/**开票终端*/
	@Excel(name = "开票终端", width = 15)
	@ApiModelProperty(value = "开票终端")
	private String kpzddm;
	/**数据来源*/
	@Dict(dictTable = "cs_xx_sjly", dicText = "cname", dicCode = "ccode")
	@ApiModelProperty(value = "数据来源")
	private String sjly;
	/**所属业态*/
	@Dict(dictTable = "cs_xx_ssyt", dicText = "cname", dicCode = "ccode")
	@ApiModelProperty(value = "所属业态")
	private String sjyt;
	/**数据类型*/
	@Dict(dictTable = "cs_xx_sjlx", dicText = "cname", dicCode = "ccode")
	@ApiModelProperty(value = "数据类型")
	private String sjlx;

	@Excel(name = "单据类型", width = 15)
	@ApiModelProperty(value = "单据类型")
	@Dict(dictTable = "cs_xx_djlx", dicText = "cname", dicCode = "ccode")
	private String djlx;

	@ApiModelProperty(value = "处理方式")
	private String clfs;

	@ApiModelProperty(value = "征收方式")
	private String zsfs="0";

	@ApiModelProperty(value = "纸质发票标志")
	private String zzfpbz="0";

	@ApiModelProperty(value = "开票类型")
	private java.lang.String kplx;

	/**客户代码*/
	@ApiModelProperty(value = "客户代码")
	private String khdm;

	@ApiModelProperty(value = "客户名称")
	private java.lang.String khmc;

	@ApiModelProperty(value = "客户税号")
	private java.lang.String khsh;

	@ApiModelProperty(value = "客户地址")
	private String khdz;

	@ApiModelProperty(value = "客户电话")
	private String khdh;

	@ApiModelProperty(value = "客户地址电话")
	private java.lang.String khdzdh;

	@ApiModelProperty(value = "客户开户银行")
	private String khyh;

	@ApiModelProperty(value = "客户银行卡号")
	private String khzh;

	@ApiModelProperty(value = "客户开户银行卡号")
	private java.lang.String khyhzh;

	@ApiModelProperty(value = "发票类型")
	private java.lang.String fplxdm;

	@ApiModelProperty(value = "特殊票种")
	private java.lang.String tspz;

	@ApiModelProperty(value = "特定要素类型代码")
	private java.lang.String tdyslxdm;

	@ApiModelProperty(value = "客户邮箱")
	private java.lang.String khlxyx;

	@ApiModelProperty(value = "客户手机")
	private java.lang.String khlxfs;

	/**公司代码*/
	@Excel(name = "公司代码", width = 15)
	@ApiModelProperty(value = "公司代码")
	private String gsdm;

	@ApiModelProperty(value = "销方名称")
	private java.lang.String xfmc;

	@ApiModelProperty(value = "销方税号")
	private java.lang.String xfsh;

	@ApiModelProperty(value = "销方地址")
	private String xfdz;

	@ApiModelProperty(value = "销方电话")
	private String xfdh;

	@ApiModelProperty(value = "销方地址电话")
	private java.lang.String xfdzdh;

	@ApiModelProperty(value = "销方开户银行")
	private String xfyh;

	@ApiModelProperty(value = "销方账号")
	private String xfzh;

	@ApiModelProperty(value = "销方开户银行账号")
	private java.lang.String xfyhzh;

	@ApiModelProperty(value = "开票人")
	private java.lang.String kpr;

	@ApiModelProperty(value = "收款人")
	private java.lang.String skr;

	@ApiModelProperty(value = "复核人")
	private java.lang.String fhr;

	@ApiModelProperty(value = "备注")
	private java.lang.String bz;

	@ApiModelProperty(value = "含税标志")
	private java.lang.String hsbz="1";

	@ApiModelProperty(value = "合计金额")
	private java.math.BigDecimal hjje;

	@ApiModelProperty(value = "合计税额")
	private java.math.BigDecimal hjse;

	@ApiModelProperty(value = "折扣金额")
	private java.math.BigDecimal zkje;

	/**扣除额*/
	@Excel(name = "扣除额", width = 15)
	@ApiModelProperty(value = "扣除额")
	private java.math.BigDecimal kce;

	@ApiModelProperty(value = "清单标志")
	private String  qdbz;

	/**纸票票种代码*/
	@Excel(name = "纸票票种代码", width = 15)
	@ApiModelProperty(value = "纸票票种代码")
	private String zpfppzdm;
	/**纸质发票代码*/
	@Excel(name = "纸质发票代码", width = 15)
	@ApiModelProperty(value = "纸质发票代码")
	private String zzfpdm;
	/**纸质发票号码*/
	@Excel(name = "纸质发票号码", width = 15)
	@ApiModelProperty(value = "纸质发票号码")
	private String zzfphm;
	/**购方自然人标识 Y/N*/
	@ApiModelProperty(value = "购方自然人标识 Y/N")
	private String gfzrrbs;
	/**是否展示购方银行账号到备注里面 Y/N*/
	@ApiModelProperty(value = "是否展示购方银行账号到备注里面 Y/N")
	private String sfzsgmfyhzh;
	/**是否展示销方银行账号到备注里面 Y/N*/
	@ApiModelProperty(value = "是否展示销方银行账号到备注里面 Y/N")
	private String sfzsxsfyhzh;


	@ApiModelProperty(value = "红字信息表/红字申请单编号")
	private java.lang.String hzxxbbh;

	@ApiModelProperty(value = "原发票代码")
	private java.lang.String yfpdm;

	@ApiModelProperty(value = "原发票号码")
	private java.lang.String yfphm;
	@ApiModelProperty(value = "原单据编号")
	private java.lang.String ydjbh;

	@ApiModelProperty(value = "红冲原因")
	private java.lang.String hcyy;

	/**
	 * 销售方农产品收购证件类型
	 * 开具农产品收购发票该节点必填
	 * 默认：201，居民身份证
	 */
	@ApiModelProperty(value = "销售方农产品收购证件类型")
	private java.lang.String ncpsgzjlx = "201";

	/**待开单据明细在触发开票前，转换为待开发票明细：
	 * 1.将待开单据中同一商品合并到一行开票
	 * 2.将待开单据中存在折扣的商品行进行折扣处理
	 * ....
	 * **/
	/**待开发票明细**/
	@ApiModelProperty(value = "商品明细")
	private List<InvoicemxParam> fpmxs;

	/**
	 * 特定业务--建筑服务
	 */
	@ApiModelProperty(value = "特定业务--建筑服务")
	Jzfw tdywJzfw;

	/**
	 * 特定业务--货物运输服务
	 */
	@ApiModelProperty(value = "特定业务--货物运输服务")
	List<Hwysfwmx> tdywHwysfwList;

	/**
	 * 特定业务--不动产销售
	 */
	@ApiModelProperty(value = "特定业务--不动产销售")
	Bdcxsfw tdywBdcxs;
	/**
	 * 特定业务--不动产经营租赁服务
	 */
	@ApiModelProperty(value = "特定业务--不动产经营租赁服务")
	Bdcjyzlfw tdywBdcjyzlfw;

	/**
	 * 特定业务--旅客运输服务
	 */
	@ApiModelProperty(value = "特定业务--旅客运输服务")
	List<Lkysfwmx> tdywLkysfwList;

	/**
	 * 差额征收数据明细
	 */
	@ApiModelProperty(value = "差额征收数据明细")
	List<Cezs> cezsList;
	/**
	 * 附加要素值数据明细
	 */
	@ApiModelProperty(value = "附加要素值数据明细")
	List<FjysVO> fjysList;
}
